package com.smx.sync.mapper;

import com.smx.sync.entity.SyncTask;
import com.smx.sync.entity.SyncTaskDaily;
import com.smx.sync.entity.SyncTaskLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * SyncConfigMapper
 *
 * @author 廖功旺
 * @version 1.0
 * @since 2025/6/23 16:42
 */
@Mapper
public interface SyncConfigMapper {

    /**
     * 获取同步任务列表
     *
     * @return 同步任务列表
     */
    List<SyncTask> getSyncTaskList();

    /**
     * 获取同步任务最后同步时间
     *
     * @param taskId 同步任务ID
     * @return 最后同步时间
     */
    String getLastSyncTime(@Param("taskId") Integer taskId);

    /**
     * 保存同步时间
     *
     * @param taskId       同步任务ID
     * @param lastSyncTime 最后同步时间
     */
    void saveLastSyncTime(@Param("taskId") Integer taskId, @Param("lastSyncTime") String lastSyncTime);

    /**
     * 更新同步时间
     *
     * @param taskId       同步任务ID
     * @param lastSyncTime 最后同步时间
     */
    void updateLastSyncTime(@Param("taskId") Integer taskId, @Param("lastSyncTime") String lastSyncTime);

    /**
     * 保存同步任务日志
     *
     * @param log 日志对象
     */
    void saveSyncTaskLog(@Param("log") SyncTaskLog log);

    /**
     * 删除同步任务日志
     */
    void removeSyncTaskLog();

    /**
     * 获取同步任务日统计数据
     *
     * @param taskId     任务ID
     * @param recordDate 记录日期
     * @return 日统计数据对象
     */
    SyncTaskDaily getSyncTaskDaily(@Param("taskId") Integer taskId,
                                   @Param("recordDate") String recordDate);

    /**
     * 保存同步任务日统计数据
     *
     * @param daily 日统计数据对象
     */
    void saveSyncTaskDaily(@Param("daily") SyncTaskDaily daily);

    /**
     * 更新同步任务日统计数据
     *
     * @param daily 日统计数据对象
     */
    void updateSyncTaskDaily(@Param("daily") SyncTaskDaily daily);

    /**
     * 删除同步任务日统计数据
     */
    void removeSyncTaskDaily();
}
